ALMaSS  1.0
The Animal, Landscape and Man Simulation System
Skylark_Female Class Reference

#include <skylarks_all.h>

Inheritance diagram for Skylark_Female:
Skylark_Adult Skylark_Base TAnimal TALMaSSObject

Public Member Functions

 Skylark_Female (int x, int y, double size, int age, SkTerritories *Terrs, Landscape *L, Skylark_Population_Manager *SPM, int bx, int by, int mh)
 
virtual void ReInit (int x, int y, double size, int age, SkTerritories *Terrs, Landscape *L, Skylark_Population_Manager *SPM, int bx, int by, int mh)
 
virtual void BeginStep (void)
 BeingStep behaviour - must be implemented in descendent classes. More...
 
virtual void Step (void)
 Step behaviour - must be implemented in descendent classes. More...
 
virtual void EndStep (void)
 EndStep behaviour - must be implemented in descendent classes. More...
 
void EstablishTerritory ()
 
int Supply_NestTime ()
 
Skylark_ClutchSupplyMyClutch ()
 
int Supply_BreedingAttempts ()
 
int Supply_BreedingSuccess ()
 
void ResetBreedingSuccess ()
 
void OnSetMyClutch (Skylark_Clutch *p_C)
 
void OnEggsHatch ()
 
void OnClutchDeath ()
 
void OnBroodDeath ()
 
void OnBreedingSuccess ()
 
void OnStopFeedingChicks ()
 
void OnMateDying ()
 
void OnMateHomeless ()
 
void OnMaleNeverComesBack (Skylark_Male *AMale)
 
void OnBreedSuccess ()
 
void SensibleCopy ()
 
- Public Member Functions inherited from Skylark_Adult
 Skylark_Adult (int x, int y, double size, int age, SkTerritories *Terrs, Landscape *L, Skylark_Population_Manager *SPM, int bx, int by, int mh)
 
virtual ~Skylark_Adult ()
 
virtual void CopyMyself (int a_sktype)
 
- Public Member Functions inherited from Skylark_Base
 Skylark_Base (int x, int y, SkTerritories *Terrs, Landscape *L, Skylark_Population_Manager *SPM, int bx, int by, int mh)
 
virtual void ReInit (int x, int y, SkTerritories *Terrs, Landscape *L, Skylark_Population_Manager *SPM, int bx, int by, int mh)
 
virtual double On_FoodSupply (double)
 
void AddStriglingMort (int lifestage)
 
virtual int WhatState ()
 
bool InSquare (rectangle R)
 
- Public Member Functions inherited from TAnimal
unsigned SupplyFarmOwnerRef ()
 
AnimalPosition SupplyPosition ()
 
APoint SupplyPoint ()
 
int SupplyPolygonRef ()
 
int Supply_m_Location_x ()
 
int Supply_m_Location_y ()
 
virtual void KillThis ()
 
virtual void CopyMyself ()
 
void SetX (int a_x)
 
void SetY (int a_y)
 
 TAnimal (int x, int y, Landscape *L)
 
virtual void ReinitialiseObject (int x, int y, Landscape *L)
 Used to re-use an object - must be implemented in descendent classes. More...
 
virtual void Dying ()
 
void CheckManagement (void)
 
void CheckManagementXY (int x, int y)
 
- Public Member Functions inherited from TALMaSSObject
int GetCurrentStateNo ()
 Returns the current state number. More...
 
void SetCurrentStateNo (int a_num)
 Sets the current state number. More...
 
bool GetStepDone ()
 Returns the step done indicator flag. More...
 
void SetStepDone (bool a_bool)
 Sets the step done indicator flag. More...
 
virtual void ReinitialiseObject ()
 Used to re-use an object - must be implemented in descendent classes. More...
 
 TALMaSSObject ()
 The constructor for TALMaSSObject. More...
 
virtual ~TALMaSSObject ()
 The destructor for TALMaSSObject. More...
 
void OnArrayBoundsError ()
 Used for debugging only, tests basic object properties. More...
 

Public Attributes

Skylark_MaleMyMate
 
- Public Attributes inherited from Skylark_Adult
bool Paired
 
- Public Attributes inherited from Skylark_Base
double m_pesticide_accumulation
 
double m_pcide_conc
 
TTypesOfSkState m_CurrentSkState
 
int Age
 
double m_Size
 
int m_Born_x
 
int m_Born_y
 
int m_MyHome
 The vegetation type where the skylark was born. More...
 
SkTerritoriesm_OurTerritories
 
Skylark_Population_Managerm_OurPopulationManager
 

Protected Member Functions

int st_Flocking ()
 
int st_Floating ()
 
bool st_Arriving ()
 
bool st_Immigrating ()
 
int st_Emigrating ()
 
int st_TempLeavingArea ()
 
int st_Finding_Territory ()
 
void st_Dying ()
 
int st_CaringForYoung ()
 
int st_BuildingUpResources ()
 
TTypesOfSkState st_MakingNest ()
 
int st_PreparingForBreeding ()
 
int st_GivingUpTerritory ()
 
TTypesOfSkState st_Laying ()
 
int st_StartingNewBrood ()
 
int st_EggHatching ()
 
int st_Incubating ()
 
int st_StoppingBreeding ()
 
double GetFood (int time)
 
int CalculateEggNumber ()
 
int CalcFoodTime (double target)
 
int GetMigrationMortality ()
 
double CheckForFields ()
 
void FeedYoung ()
 
virtual bool OnFarmEvent (FarmToDo event)
 
virtual void PesticideResponse ()
 
skSpiralResult Spiral (int x, int y, int radius)
 
skSpiralResult Spiral2 (int x, int y, int radius)
 
- Protected Member Functions inherited from Skylark_Adult
virtual double RemoveEM (double food)
 
double GetVegHindrance (int PolyRef)
 
double GetWeatherHindrance ()
 
bool GetBadWeather ()
 Extreme weather conditions check. More...
 
- Protected Member Functions inherited from Skylark_Base
bool DailyMortality (int mort)
 
- Protected Member Functions inherited from TAnimal
void CorrectWrapRound ()
 Corrects wrap around co-ordinate problems. More...
 

Protected Attributes

Skylark_ClutchMyClutch
 
int m_Counter1
 
int m_NestTime
 
bool NestLoc
 
double Resources
 
int EggCounter
 
int m_BreedingAttempts
 
int m_BreedingSuccess
 
int m_EggNumber
 
bool m_pesticide_sprayed_die
 
int m_toowet
 
double m_MinFemaleAcceptScore
 
- Protected Attributes inherited from Skylark_Adult
int GoodWeather
 
bool BSuccess
 
double MyExtractEff
 
int m_pesticide_affected
 
skTerritory_struct MyTerritory
 
vector< APoint > * m_aTerrlist
 
- Protected Attributes inherited from TAnimal
int m_Location_x
 
int m_Location_y
 
Landscapem_OurLandscape
 
- Protected Attributes inherited from TALMaSSObject
int m_CurrentStateNo
 The basic state number for all objects - '-1' indicates death. More...
 
bool m_StepDone
 Indicates whether the iterative step code is done for this timestep. More...
 

Constructor & Destructor Documentation

◆ Skylark_Female()

Skylark_Female::Skylark_Female ( int  x,
int  y,
double  size,
int  age,
SkTerritories Terrs,
Landscape L,
Skylark_Population_Manager SPM,
int  bx,
int  by,
int  mh 
)
5201  : Skylark_Adult(x, y, size, age, Terrs, L, SPM, bx, by, mh) {
5202  MyMate = NULL;
5203  MyClutch = NULL;
5205  m_BreedingAttempts = 0;
5207 }
Skylark_Adult(int x, int y, double size, int age, SkTerritories *Terrs, Landscape *L, Skylark_Population_Manager *SPM, int bx, int by, int mh)
Definition: skylarks_all.cpp:3677
void ResetBreedingSuccess()
Definition: skylarks_all.cpp:6114
double m_MinFemaleAcceptScore
Definition: skylarks_all.h:804
Skylark_Clutch * MyClutch
Definition: skylarks_all.h:793
int m_BreedingAttempts
Definition: skylarks_all.h:799
Skylark_Male * MyMate
Definition: skylarks_all.h:806

References m_BreedingAttempts, m_MinFemaleAcceptScore, MyClutch, MyMate, and ResetBreedingSuccess().

Member Function Documentation

◆ BeginStep()

void Skylark_Female::BeginStep ( void  )
virtual

BeingStep behaviour - must be implemented in descendent classes.

Reimplemented from TAnimal.

5425  {
5426 #ifdef __CJTDebug_5
5427  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
5428 #endif
5429  if ( m_CurrentSkState == toss_Destroy ) return;
5430  CheckManagement();
5432  switch ( m_CurrentSkState ) {
5433  case toss_FFloating: // Floating
5434  switch ( st_Floating() ) {
5435  case 2:
5437  break;
5438  case 3:
5439  m_CurrentSkState = toss_FTempLeavingArea; // -> temp.leave
5440  break;
5441  case 1:
5442  m_CurrentSkState = toss_FFindingTerritory; // -> find terr.
5443  break;
5444  case 0:
5445  break;
5446  }
5447  m_StepDone = true;
5448  break;
5449  case toss_FCaringForYoung: // CaringForYoung
5450  switch ( st_CaringForYoung() ) {
5451  case 2: //StopBreeding
5453  break;
5454  case 1:
5456  break;
5457  default:
5458  break;
5459  }
5460  m_StepDone = true;
5461  break;
5462  default:
5463  /* char errornum[20]; sprintf(errornum, "%d", m_CurrentSkState );
5464  g_land->Warn("Skylark_Female::BeginStep(): Unknown state: ", errornum); exit(0); */
5465  break;
5466  }
5467 }
TTypesOfSkState m_CurrentSkState
Definition: skylarks_all.h:594
int st_Floating()
Definition: skylarks_all.cpp:5822
int st_CaringForYoung()
Definition: skylarks_all.cpp:6515
bool m_StepDone
Indicates whether the iterative step code is done for this timestep.
Definition: PopulationManager.h:118
void CheckManagement(void)
Definition: PopulationManager.cpp:1404
@ toss_StartingNewBrood
Definition: skylarks_all.h:59
@ toss_StoppingBreeding
Definition: skylarks_all.h:59
@ toss_FCaringForYoung
Definition: skylarks_all.h:59
@ toss_FTempLeavingArea
Definition: skylarks_all.h:57
@ toss_Destroy
Definition: skylarks_all.h:62
@ toss_FFindingTerritory
Definition: skylarks_all.h:58
@ toss_FFlocking
Definition: skylarks_all.h:57
@ toss_FFloating
Definition: skylarks_all.h:57

References TAnimal::CheckManagement(), Skylark_Base::m_CurrentSkState, m_MinFemaleAcceptScore, TALMaSSObject::m_StepDone, st_CaringForYoung(), st_Floating(), toss_Destroy, toss_FCaringForYoung, toss_FFindingTerritory, toss_FFloating, toss_FFlocking, toss_FTempLeavingArea, toss_StartingNewBrood, and toss_StoppingBreeding.

◆ CalcFoodTime()

int Skylark_Female::CalcFoodTime ( double  target)
protected
6710 {
6711  if ( MyMate == NULL ) {
6712  g_msg->Warn( WARN_BUG, "Skylark_Female::CalcFoodTime(): No Mate!", "" );
6713  exit( 1 );
6714  }
6715 
6716 
6717 #ifdef __CJTDebug_5
6718  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6719 #endif
6720  // Must calcuate how much time it takes to get 'target' food
6721  double FoodGathered = 0.0;
6722  double available;
6723  int FoodTime = 0; // How much time used
6724  int used = 0;
6725  // Starting with the best sources first, use time to get food
6726  // The male ought to have sorted the table already (or yesterday)
6727  while ( ( FoodGathered < target ) && ( used < MyMate->SupplyNoHabitatRefs() ) ) {
6728  available = MyMate->m_HabitatTable_Size[ used ] * MyMate->m_InsectTable[ used ];
6729  // calcualte for, weather and extraction rate
6730  available *= MyExtractEff;
6731  if ( available < ( target - FoodGathered ) ) {
6732  FoodGathered += available;
6733  //used++;
6734  // Calc time used
6735  FoodTime += MyMate->m_HabitatTable_Size[ used++ ]; // assume 1 min per m2
6736  } else {
6737  // Enough Food here to reach target
6738  // foodpermin = available/area * ExtractionEff * VegHindrance
6739  // mins = (target-FoodGathered)/FoodperMin
6740  double FoodPerMin = available / MyMate->m_HabitatTable_Size[ used ];
6741  FoodTime += ( int )floor( 0.5 + ( target - FoodGathered ) / FoodPerMin );
6742  break;
6743  }
6744  }
6745  return FoodTime;
6746 }
void Warn(MapErrorState a_level, std::string a_msg1, std::string a_msg2)
Definition: maperrormsg.cpp:59
double MyExtractEff
Definition: skylarks_all.h:741
vector< int > m_HabitatTable_Size
Definition: skylarks_all.h:900
vector< double > m_InsectTable
Definition: skylarks_all.h:901
class MapErrorMsg * g_msg
This pointer provides access the to the internal ALMaSS error message system.
Definition: maperrormsg.cpp:41
@ WARN_BUG
Definition: maperrormsg.h:34

References g_msg, Skylark_Male::m_HabitatTable_Size, Skylark_Male::m_InsectTable, Skylark_Adult::MyExtractEff, MyMate, MapErrorMsg::Warn(), and WARN_BUG.

Referenced by st_Incubating().

◆ CalculateEggNumber()

int Skylark_Female::CalculateEggNumber ( )
protected
6683  {
6684 #ifdef __CJTDebug_5
6685  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6686 #endif
6687  // Data from PO/AP study at Kal
6688  int eggs;
6689  int chance;
6690  switch ( m_BreedingAttempts ) {
6691  case 1:
6692  chance = random( 160 );
6693  if ( chance < 9 ) eggs = 2; else if ( chance < 37 + 9 ) eggs = 3; else if ( chance < 99 + 37 + 9 ) eggs = 4; else
6694  eggs = 5;
6695  break;
6696  default:
6697  chance = random( 125 );
6698  if ( chance < 29 ) eggs = 3; else if ( chance < 29 + 80 ) eggs = 4; else
6699  eggs = 5;
6700  break;
6701  }
6702  if ( eggs < 1 ) eggs = 1;
6703  return eggs;
6704 }
int random(int a_range)
Definition: ALMaSS_CmdLine.cpp:142

References m_BreedingAttempts, and random().

Referenced by st_Laying().

◆ CheckForFields()

double Skylark_Female::CheckForFields ( )
protected
6767  {
6768 #ifdef __CJTDebug_5
6769  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6770 #endif
6771 
6772  // Checks each 1m in the territory and returns the proportion of field<4cm
6773  // Note only arable fields are returned as field - permanent pasture is not
6774  int TallFieldVeg = 0;
6775  for ( int xx = MyTerritory.x; xx < MyTerritory.x + MyTerritory.size; xx++ ) {
6776  for ( int yy = MyTerritory.y; yy < MyTerritory.y + MyTerritory.size; yy++ ) {
6777  int Cx = xx;
6778  int Cy = yy;
6779  m_OurLandscape->CorrectCoords( Cx, Cy );
6780  int PolyRef = m_OurLandscape->SupplyPolyRef( Cx, Cy );
6781  if ( ( m_OurLandscape->SupplyVegHeight( PolyRef ) > 50.0 )
6782  && ( ( m_OurLandscape->SupplyElementType( PolyRef ) == tole_Field )
6784  TallFieldVeg++;
6785  }
6786  }
6787  return TallFieldVeg / double( MyTerritory.size * MyTerritory.size );
6788 }
double SupplyVegHeight(int a_polyref)
Definition: landscape.h:936
void CorrectCoords(int &x, int &y)
Function to prevent wrap around errors with co-ordinates using x/y pair.
Definition: landscape.h:1535
int SupplyPolyRef(int a_x, int a_y)
Definition: landscape.h:1488
TTypesOfLandscapeElement SupplyElementType(int a_polyref)
Definition: landscape.h:1110
skTerritory_struct MyTerritory
Definition: skylarks_all.h:743
Landscape * m_OurLandscape
Definition: PopulationManager.h:229
int x
Definition: skylarks_all.h:308
int size
Definition: skylarks_all.h:310
int y
Definition: skylarks_all.h:309
@ tole_Field
Definition: tole_declaration.h:43
@ tole_UnsprayedFieldMargin
Definition: tole_declaration.h:72

References Landscape::CorrectCoords(), TAnimal::m_OurLandscape, Skylark_Adult::MyTerritory, skTerritory_struct::size, Landscape::SupplyElementType(), Landscape::SupplyPolyRef(), Landscape::SupplyVegHeight(), tole_Field, tole_UnsprayedFieldMargin, skTerritory_struct::x, and skTerritory_struct::y.

◆ EndStep()

void Skylark_Female::EndStep ( void  )
virtual

EndStep behaviour - must be implemented in descendent classes.

Reimplemented from TAnimal.

5652  {
5653 #ifdef __CJTDebug_5
5654  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
5655 #endif
5656  // Need to find out if it is poisoned
5657 #ifdef __PESTICIDE_RA
5659 #endif
5660 }
virtual void PesticideResponse()
Definition: skylarks_all.cpp:6850

References PesticideResponse().

◆ EstablishTerritory()

void Skylark_Female::EstablishTerritory ( )
5925  {
5926 #ifdef __CJTDebug_5
5927  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
5928 #endif
5929  MyMate->OnPairing( this );
5930  Paired = true;
5932  Resources = 0;
5933  // Move 31-01-2007 to Immigrating m_BreedingAttempts = 0;
5935  m_Location_x = ( ( MyTerritory.size / 2 ) + MyTerritory.x + 5 ) % m_OurPopulationManager->SimW; // next to male
5937  BSuccess = false; // reset the breeding success flag
5938 }
int SimH
Definition: PopulationManager.h:511
int SimW
Definition: PopulationManager.h:511
void FemaleOccupy(int ref, Skylark_Female *Female)
Definition: skylarks_all.cpp:2392
bool Paired
Definition: skylarks_all.h:752
bool BSuccess
Definition: skylarks_all.h:740
Skylark_Population_Manager * m_OurPopulationManager
Definition: skylarks_all.h:603
SkTerritories * m_OurTerritories
Definition: skylarks_all.h:602
double Resources
Definition: skylarks_all.h:797
skTerritory_struct Supply_Territory()
Definition: skylarks_all.cpp:4548
void OnPairing(Skylark_Female *female)
Definition: skylarks_all.cpp:4920
int m_Location_y
Definition: PopulationManager.h:228
int m_Location_x
Definition: PopulationManager.h:225
int ref
Definition: skylarks_all.h:311

References Skylark_Adult::BSuccess, SkTerritories::FemaleOccupy(), TAnimal::m_Location_x, TAnimal::m_Location_y, Skylark_Base::m_OurPopulationManager, Skylark_Base::m_OurTerritories, MyMate, Skylark_Adult::MyTerritory, Skylark_Male::OnPairing(), Skylark_Adult::Paired, skTerritory_struct::ref, Resources, Population_Manager::SimH, Population_Manager::SimW, skTerritory_struct::size, Skylark_Male::Supply_Territory(), skTerritory_struct::x, and skTerritory_struct::y.

Referenced by Skylark_Male::OnReHouse(), and st_Finding_Territory().

◆ FeedYoung()

void Skylark_Female::FeedYoung ( )
protected

Can only get food in daylight - dawn & dusk. Must keep them warm if the weather is bad - the quick version below catagorizes this into good or bad weather

6542  {
6543 #ifdef __CJTDebug_5
6544  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6545 #endif
6551  double RainToday = m_OurLandscape->SupplyRain();
6552  if (RainToday>MaxFeedRain) return; // No feeding today
6553  double TempToday = m_OurLandscape->SupplyTemp();
6554  int food_time = m_OurLandscape->SupplyDaylength( ) - 120;
6555  int BrSize = MyMate->SupplyBroodSize();
6556  m_NestTime = ( 24 * 60 - food_time ); //add night time
6557  int FeedingProbs[ 16 ];
6558  double ChickFood[ 16 ];
6559 #ifdef __PESTICIDE_RA_CHICK
6560  double ChickPoison[ 16 ];
6561 #endif
6562  double spare;
6563  double resources_all = GetFood( food_time /*, pcide*/ ); // kcal insects
6564  // remove metabolic requirements
6565  double resources = RemoveEM( resources_all );
6566  int HungryChicks = BrSize;
6567  if ( resources > 0 ) {
6568  // Zero the feeding probabilities
6569  for ( int i = 0; i < HungryChicks; i++ ) {
6570  FeedingProbs[ i ] = 0;
6571  ChickFood[ i ] = 0;
6572 #ifdef __PESTICIDE_RA_CHICK
6573  ChickPoison[ i ] = 0;
6574 #endif
6575  }
6576  // if the chicks are 1-4 days old then she must warm them with energy
6577  // From Mertens (1972)
6578  // M = 0.0719*power(brood_weight,0.613)*(BroodTemp-AmbientTemp); // Brood temp = 35 double broodweight=0;
6579  int BroodWeight = 0;
6580  for ( int i = 0; i < HungryChicks; i++ ) {
6581  // Add up brood weight
6582  int weight = ( int )floor( MyMate->SupplyBroodWeight( i ) + 0.5 );
6583  BroodWeight += weight;
6584  // While we are at it we might as well create the FeedinbProbs array too
6585  for ( int j = i; j < HungryChicks; j++ ) FeedingProbs[ j ] += ( int )floor( 0.5 + weight );
6586  }
6587  if ( MyMate->SupplyBroodAge( 0 ) < 6 ) {
6588  resources -= pow( BroodWeight, 0.613 ) * 0.0719 * double( 35 - TempToday );
6589  }
6590  // Now give the food to the chicks
6591  // The chance that a chick get a portion is proportional to their size
6592  resources /= FoodTripsPerDay; // Split into 30 portions (food trips per day)
6593 #ifdef __PESTICIDE_RA_CHICK
6594  double pcide_remain = resources * m_pcide_conc;
6595 #endif
6596  while ( ( resources > 0.01 ) && ( HungryChicks > 0 ) )
6597  {
6598  for ( int portion = 0; portion < FoodTripsPerDay; portion++ ) { // For each portion
6599  int choose = random( BroodWeight );
6600  for ( int i = 0; i < BrSize; i++ ) {
6601  if ( choose < FeedingProbs[ i ] ) {
6602  ChickFood[ i ] += resources; // store the food for that chick
6603 #ifdef __PESTICIDE_RA_CHICK
6604  ChickPoison[ i ] += pcide_remain;
6605 #endif
6606  break;
6607  }
6608  }
6609  }
6610  // Now give the food to the chicks
6611  // Better do this than feed each a portion at a time, it is more efficient
6612  // and stops problems with growth between portions
6613  spare = 0;
6614  for ( int i = 0; i < BrSize; i++ ) {
6615 #ifdef __PESTICIDE_RA_CHICK
6616  double extra = MyMate->OnFoodMessage( i, ChickFood[ i ] , ChickPoison[i] );
6617 #else
6618  double extra = MyMate->OnFoodMessage( i, ChickFood[ i ] );
6619 #endif
6620  if ( extra > 0 ) // chick must be full
6621  {
6622  FeedingProbs[ i ] = -1; // no chance of food
6623  HungryChicks--;
6624  spare += extra;
6625  }
6626  }
6627  resources = spare / FoodTripsPerDay;
6628  }
6629  }
6630 }
double SupplyTemp(void)
Definition: landscape.h:1386
int SupplyDaylength(void)
Definition: landscape.h:1530
double SupplyRain(void)
Definition: landscape.h:1365
virtual double RemoveEM(double food)
Definition: skylarks_all.cpp:3717
double m_pcide_conc
Definition: skylarks_all.h:593
double GetFood(int time)
Definition: skylarks_all.cpp:6633
int m_NestTime
Definition: skylarks_all.h:795
double OnFoodMessage(int n, double f)
Definition: skylarks_all.h:948
int SupplyBroodWeight(int n)
Definition: skylarks_all.h:942
int SupplyBroodSize()
Definition: skylarks_all.h:927
int SupplyBroodAge(int n)
Definition: skylarks_all.h:932
double MaxFeedRain
Definition: skylarks_all.cpp:222
static int FoodTripsPerDay
Definition: skylarks_all.cpp:184

References FoodTripsPerDay, GetFood(), m_NestTime, TAnimal::m_OurLandscape, Skylark_Base::m_pcide_conc, MaxFeedRain, MyMate, Skylark_Male::OnFoodMessage(), random(), Skylark_Adult::RemoveEM(), Skylark_Male::SupplyBroodAge(), Skylark_Male::SupplyBroodSize(), Skylark_Male::SupplyBroodWeight(), Landscape::SupplyDaylength(), Landscape::SupplyRain(), and Landscape::SupplyTemp().

Referenced by st_CaringForYoung(), and st_GivingUpTerritory().

◆ GetFood()

double Skylark_Female::GetFood ( int  time)
protected
6633  {
6634  // returns insects in g dry weight
6635 #ifdef __CJTDebug_5
6636  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6637 #endif
6638  // Extract insects available from each habitat in the male's table
6639  // for as long as she spends searching
6640  double food = 0;
6641  int index = 0;
6642 #ifdef __PESTICIDE_RA
6643  m_pcide = 0.0;
6644 #endif
6645  double fd;
6646  while ( time > 0 ) {
6647 #ifdef __CJTDebug_4
6648  if ( index > 249 )
6650 #endif
6651  int area = MyMate->m_HabitatTable_Size[ index ];
6652  if ( time > area ) {
6653  time -= area;
6654  // Food+= area*WeatherHindrance*ExtractionEfficiency*Insects per m2
6655  fd = area* MyExtractEff * MyMate->m_InsectTable[ index ];
6656  food += fd;
6657 #ifdef __PESTICIDE_RA
6658  // m_pcide has total mg collected
6659  m_pcide += MyMate->m_PConcTable[ index ] * fd * KcalPerGInsect_kg_inv; // Food needs converting from kcal to kg
6660  //m_pcide += 53.0 * fd * KcalPerGInsect_kg_inv; // Food needs converting from kcal to kg
6661 #endif
6662  index++;
6663  if ( index == MyMate->SupplyNoHabitatRefs() ) time = 0; // Nowhere left to look
6664  } else {
6665  // Food+=
6666  // minutes left*WeatherHindrance*ExtractionEfficiency*Insects per m2
6667  fd = time * MyExtractEff * MyMate->m_InsectTable[ index ];
6668  food += fd;
6669 #ifdef __PESTICIDE_RA
6670  m_pcide += MyMate->m_PConcTable[ index ] * fd * KcalPerGInsect_kg_inv; // Food needs converting from kcal to kg
6671  //m_pcide += 53.0 * fd * KcalPerGInsect_kg_inv; // Food needs converting from kcal to kg
6672 #endif
6673  time = 0;
6674  }
6675  }
6676  return food;
6677 }
int SupplyNoHabitatRefs()
Definition: skylarks_all.h:922
void OnArrayBoundsError()
Used for debugging only, tests basic object properties.
Definition: PopulationManager.cpp:1427
const double KcalPerGInsect_kg_inv
Definition: skylarks_all.cpp:202

References KcalPerGInsect_kg_inv, Skylark_Male::m_HabitatTable_Size, Skylark_Male::m_InsectTable, Skylark_Adult::MyExtractEff, MyMate, TALMaSSObject::OnArrayBoundsError(), and Skylark_Male::SupplyNoHabitatRefs().

Referenced by FeedYoung(), and st_PreparingForBreeding().

◆ GetMigrationMortality()

int Skylark_Female::GetMigrationMortality ( )
protected
6753  {
6754 #ifdef __CJTDebug_5
6755  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6756 #endif
6757  Age++; // Get one year older (if you live)
6758  if ( Age == 1 ) return JuvenileReturnMort;
6760 }
int Age
Definition: skylarks_all.h:595
int SupplyF_Mig_Mort()
Definition: skylarks_all.h:491
int JuvenileReturnMort
Definition: skylarks_all.cpp:225

References Skylark_Base::Age, JuvenileReturnMort, Skylark_Base::m_OurPopulationManager, and Skylark_Population_Manager::SupplyF_Mig_Mort().

Referenced by st_Immigrating().

◆ OnBreedingSuccess()

void Skylark_Female::OnBreedingSuccess ( )
5674  {
5675 #ifdef __CJTDebug_5
5676  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
5677 #endif
5678  BSuccess = true;
5679 }

References Skylark_Adult::BSuccess.

Referenced by Skylark_Male::OnPreFledgelingMature(), and Skylark_Male::st_ScaringOffChicks().

◆ OnBreedSuccess()

void Skylark_Female::OnBreedSuccess ( )
inline
845 { m_BreedingSuccess++; }
int m_BreedingSuccess
Definition: skylarks_all.h:800

Referenced by Skylark_Male::OnAddPreFledgeling().

◆ OnBroodDeath()

void Skylark_Female::OnBroodDeath ( )
5972  {
5973 #ifdef __CJTDebug_5
5974  if ( IsAlive() != 0xDEADC0DE )
5975  DEADCODEError();
5976 #endif
5977  if ( Paired ) // if !Paired then ignore them, must have deserted
5978  {
5979  // Start a new brood if not already done so naturally
5980  if ( !MyClutch ) {
5981  m_Counter1 = 5;
5983  }
5984  }
5985 }
int m_Counter1
Definition: skylarks_all.h:794

References m_Counter1, Skylark_Base::m_CurrentSkState, MyClutch, Skylark_Adult::Paired, and toss_StartingNewBrood.

Referenced by Skylark_Male::OnBroodDeath().

◆ OnClutchDeath()

void Skylark_Female::OnClutchDeath ( )
5990  {
5991 #ifdef __CJTDebug_5
5992  if ( IsAlive() != 0xDEADC0DE )
5993  DEADCODEError();
5994 #endif
5995  if ( Paired ) // if !Paired then ignore the message, must have deserted
5996  {
5997 #ifdef __CJTDebug_7
5998  if ( !MyClutch ) {
5999  g_land->Warn( "Skylark_Female::OnClutchDeat - No clutch to die ", NULL );
6000  exit( 1 );
6001  }
6002 #endif
6003  MyClutch = NULL;
6004  m_Counter1 = 5;
6005  m_CurrentSkState = toss_StartingNewBrood; //Go to new brood start
6006  }
6007 }
void Warn(std::string a_msg1, std::string a_msg2)
Definition: landscape.h:1579
Landscape * g_land
This pointer provides access the to landscape module.
Definition: skylarks_all.cpp:49

References g_land, m_Counter1, Skylark_Base::m_CurrentSkState, MyClutch, Skylark_Adult::Paired, toss_StartingNewBrood, and Landscape::Warn().

Referenced by Skylark_Clutch::st_Dying().

◆ OnEggsHatch()

void Skylark_Female::OnEggsHatch ( )
6012  {
6013 #ifdef __CJTDebug_5
6014  if ( IsAlive() != 0xDEADC0DE )
6015  DEADCODEError();
6016 #endif
6017  // This function must not be called until the nestling objects have been
6018  // created
6019 #ifdef __CJTDebug_7
6020  if ( !MyClutch ) {
6021  g_land->Warn( "Skylark_Female::OnEggsHatch - No clutch to hatch ", NULL );
6022  exit( 1 );
6023  }
6024 #endif
6025  MyClutch = NULL;
6026  m_CurrentSkState = toss_EggHatching; //Go to EggHatching
6027  // Tell the male
6028  MyMate->OnEggHatch();
6029 }
void OnEggHatch()
Definition: skylarks_all.cpp:4817
@ toss_EggHatching
Definition: skylarks_all.h:59

References g_land, Skylark_Base::m_CurrentSkState, MyClutch, MyMate, Skylark_Male::OnEggHatch(), toss_EggHatching, and Landscape::Warn().

Referenced by Skylark_Clutch::st_Hatching().

◆ OnFarmEvent()

bool Skylark_Female::OnFarmEvent ( FarmToDo  event)
protectedvirtual

Reimplemented from TAnimal.

5221  {
5222  switch ( event ) {
5223  case sleep_all_day:
5224  break;
5225  case autumn_plough:
5226  // If she is in nest building then the nest is destroyed
5228  // Make a state change
5230  }
5231  break;
5232  case autumn_harrow:
5233  // If she is in nest building then the nest is destroyed
5235  // Make a state change
5237  }
5238  break;
5239  case autumn_roll:
5240  break;
5241  case autumn_sow:
5242  // If she is in nest building then the nest is destroyed
5244  // Make a state change
5246  }
5247  break;
5248  case winter_plough:
5249  // If she is in nest building then the nest is destroyed
5251  // Make a state change
5253  }
5254  break;
5255  case deep_ploughing:
5256  // If she is in nest building then the nest is destroyed
5258  // Make a state change
5260  }
5261  break;
5262  case spring_plough:
5263  // If she is in nest building then the nest is destroyed
5265  // Make a state change
5267  }
5268  break;
5269  case spring_harrow:
5270  // If she is in nest building then the nest is destroyed
5272  // Make a state change
5274  }
5275  break;
5276  case spring_roll:
5277  break;
5278  case spring_sow:
5279  // If she is in nest building then the nest is destroyed
5281  // Make a state change
5283  }
5284  break;
5285  case fp_npks:
5286  break;
5287  case fp_npk:
5288  break;
5289  case fp_pk:
5290  break;
5291  case fp_liquidNH3:
5292  break;
5293  case fp_slurry:
5294  break;
5295  case fp_manganesesulphate:
5296  break;
5297  case fp_manure:
5298  break;
5299  case fp_greenmanure:
5300  break;
5301  case fp_sludge:
5302  break;
5303  case fa_npk:
5304  break;
5305  case fa_pk:
5306  break;
5307  case fa_slurry:
5308  break;
5309  case fa_ammoniumsulphate:
5310  break;
5311  case fa_manure:
5312  break;
5313  case fa_greenmanure:
5314  break;
5315  case fa_sludge:
5316  break;
5317  case herbicide_treat:
5318  break;
5319  case growth_regulator:
5320  break;
5321  case fungicide_treat:
5322  break;
5323  case insecticide_treat:
5325  break;
5326  case syninsecticide_treat:
5327  if ( random( 1000 ) < cfg_insecticide_direct_mortF.value() ) {
5328 #ifdef TEST_ISSUE_DEATH_WARRANT
5329  printf( "Skylark_Female::OnFarmEvent() : %d : %d\n", event, ( int )g_date->Date() );
5330 #endif
5332  }
5333  break;
5334  case molluscicide:
5335  break;
5336  case row_cultivation:
5337  // If she is in nest building then the nest is destroyed
5339  // Make a state change
5341  }
5342  break;
5343  case strigling:
5344  // If she is in nest building then the nest is destroyed
5345  if ( m_CurrentSkState == toss_MakingNest ) {
5346  // Make a state change
5348  AddStriglingMort( 0 );
5349  }
5350  break;
5351  case hilling_up:
5352  break;
5353  case water:
5354  break;
5355  case swathing:
5356  break;
5357  case harvest:
5358  break;
5359  case cattle_out:
5360  case cattle_out_low:
5361  break;
5362  case cut_to_hay:
5363  break;
5364  case cut_to_silage:
5365  break;
5366  case straw_chopping:
5367  break;
5368  case hay_turning:
5369  break;
5370  case hay_bailing:
5371  break;
5372  case stubble_harrowing:
5373  // If she is in nest building then the nest is destroyed
5374  if ( m_CurrentSkState == toss_MakingNest ) {
5375  // Make a state change
5377  }
5378  break;
5380  // If she is in nest building then the nest is destroyed
5382  // Make a state change
5384  }
5385  break;
5386  case burn_straw_stubble:
5387  break;
5388  case mow:
5389  break;
5390  case cut_weeds:
5391  break;
5392  case pigs_out:
5393 #ifndef __NoPigsOutEffect
5394  if ( Paired ) {
5395  if ( random( 100 ) < 2 ) // 2%
5396  {
5397  // Too much disturbance so give up
5399  }
5400  }
5401 #endif
5402  break;
5403  case strigling_sow:
5404  // If she is in nest building then the nest is destroyed
5406  // Make a state change
5408  AddStriglingMort( 0 );
5409  }
5410  break;
5411  case product_treat:
5412  break;
5413  case glyphosate:
5414  break;
5415  default:
5416  g_land->Warn( "Skylark_Female::OnFarmEvent(): ""Unknown event type:", m_OurLandscape->EventtypeToString( event ) );
5417  exit( 1 );
5418  }
5419  if ( m_CurrentSkState == toss_FDying ) return true; else
5420  return false;
5421 }
class Calendar * g_date
Definition: calendar.cpp:38
long Date(void)
Definition: calendar.h:57
int value(void)
Definition: configurator.h:98
std::string EventtypeToString(int a_event)
Definition: Landscape.cpp:3918
void AddStriglingMort(int lifestage)
Definition: skylarks_all.h:611
CfgInt cfg_insecticide_direct_mortF
@ toss_MakingNest
Definition: skylarks_all.h:58
@ toss_FDying
Definition: skylarks_all.h:59
@ toss_PreparingForBreeding
Definition: skylarks_all.h:58
@ toss_GivingUpTerritory
Definition: skylarks_all.h:60
@ burn_straw_stubble
Definition: treatment.h:92
@ autumn_harrow
Definition: treatment.h:37
@ swathing
Definition: treatment.h:81
@ fa_pk
Definition: treatment.h:62
@ winter_plough
Definition: treatment.h:42
@ strigling
Definition: treatment.h:77
@ fp_npks
Definition: treatment.h:48
@ glyphosate
Definition: treatment.h:102
@ fa_sludge
Definition: treatment.h:68
@ fp_liquidNH3
Definition: treatment.h:51
@ spring_roll
Definition: treatment.h:46
@ fa_greenmanure
Definition: treatment.h:67
@ spring_plough
Definition: treatment.h:44
@ molluscicide
Definition: treatment.h:75
@ syninsecticide_treat
Definition: treatment.h:99
@ hay_turning
Definition: treatment.h:88
@ autumn_roll
Definition: treatment.h:38
@ fp_manure
Definition: treatment.h:55
@ deep_ploughing
Definition: treatment.h:43
@ pigs_out
Definition: treatment.h:84
@ fa_npk
Definition: treatment.h:61
@ herbicide_treat
Definition: treatment.h:71
@ row_cultivation
Definition: treatment.h:76
@ spring_sow
Definition: treatment.h:47
@ fungicide_treat
Definition: treatment.h:73
@ fp_manganesesulphate
Definition: treatment.h:53
@ harvest
Definition: treatment.h:82
@ cut_to_silage
Definition: treatment.h:86
@ sleep_all_day
Definition: treatment.h:33
@ mow
Definition: treatment.h:93
@ fa_ammoniumsulphate
Definition: treatment.h:65
@ autumn_plough
Definition: treatment.h:34
@ straw_chopping
Definition: treatment.h:87
@ fa_manure
Definition: treatment.h:66
@ fp_greenmanure
Definition: treatment.h:56
@ fa_slurry
Definition: treatment.h:63
@ product_treat
Definition: treatment.h:101
@ stubble_harrowing
Definition: treatment.h:90
@ hilling_up
Definition: treatment.h:79
@ growth_regulator
Definition: treatment.h:72
@ insecticide_treat
Definition: treatment.h:74
@ trial_insecticidetreat
Definition: treatment.h:96
@ cattle_out_low
Definition: treatment.h:100
@ cut_to_hay
Definition: treatment.h:85
@ cut_weeds
Definition: treatment.h:94
@ fp_sludge
Definition: treatment.h:57
@ autumn_sow
Definition: treatment.h:41
@ fp_npk
Definition: treatment.h:49
@ fp_pk
Definition: treatment.h:50
@ hay_bailing
Definition: treatment.h:89
@ spring_harrow
Definition: treatment.h:45
@ strigling_sow
Definition: treatment.h:95
@ cattle_out
Definition: treatment.h:83
@ fp_slurry
Definition: treatment.h:52
@ water
Definition: treatment.h:80
@ autumn_or_spring_plough
Definition: treatment.h:91

References Skylark_Base::AddStriglingMort(), autumn_harrow, autumn_or_spring_plough, autumn_plough, autumn_roll, autumn_sow, burn_straw_stubble, cattle_out, cattle_out_low, cfg_insecticide_direct_mortF, cut_to_hay, cut_to_silage, cut_weeds, Calendar::Date(), deep_ploughing, Landscape::EventtypeToString(), fa_ammoniumsulphate, fa_greenmanure, fa_manure, fa_npk, fa_pk, fa_sludge, fa_slurry, fp_greenmanure, fp_liquidNH3, fp_manganesesulphate, fp_manure, fp_npk, fp_npks, fp_pk, fp_sludge, fp_slurry, fungicide_treat, g_date, g_land, glyphosate, growth_regulator, harvest, hay_bailing, hay_turning, herbicide_treat, hilling_up, insecticide_treat, Skylark_Base::m_CurrentSkState, TAnimal::m_OurLandscape, molluscicide, mow, Skylark_Adult::Paired, pigs_out, product_treat, random(), row_cultivation, sleep_all_day, spring_harrow, spring_plough, spring_roll, spring_sow, straw_chopping, strigling, strigling_sow, stubble_harrowing, swathing, syninsecticide_treat, toss_FDying, toss_GivingUpTerritory, toss_MakingNest, toss_PreparingForBreeding, toss_StartingNewBrood, trial_insecticidetreat, CfgInt::value(), Landscape::Warn(), water, and winter_plough.

◆ OnMaleNeverComesBack()

void Skylark_Female::OnMaleNeverComesBack ( Skylark_Male AMale)
6080  {
6081 #ifdef __CJTDebug_5
6082  if ( IsAlive() != 0xDEADC0DE )
6083  DEADCODEError();
6084 #endif
6085  if ( MyMate == AMale ) {
6086  MyMate = NULL;
6087  Paired = false;
6088  BSuccess = false;
6089  } //This could cause problems if this function is called late
6090 }

References Skylark_Adult::BSuccess, MyMate, and Skylark_Adult::Paired.

Referenced by Skylark_Male::OnPairing(), and Skylark_Male::st_Immigrating().

◆ OnMateDying()

void Skylark_Female::OnMateDying ( )
6034  {
6035 #ifdef __CJTDebug_5
6036  if ( IsAlive() != 0xDEADC0DE )
6037  DEADCODEError();
6038 #endif
6039  // Assumes that she forgets about any active brood
6040  MyMate = NULL;
6041  if ( MyClutch ) {
6042  MyClutch->OnMumGone();
6043  MyClutch = 0;
6044  }
6045  if ( MyTerritory.ref != -1 ) {
6047  MyTerritory.ref = -1;
6048 #ifdef __SKPOM
6050 #endif
6051  }
6054 }
int SupplyDayInYear(void)
Definition: landscape.h:1596
void RemoveFemale(int ref)
Definition: skylarks_all.cpp:2399
void OnMumGone()
Definition: skylarks_all.cpp:2660
void WriteSKPOM1(int n, int n2)
Definition: skylarks_all.h:479
int g_stopdate
Definition: skylarks_all.cpp:43

References g_stopdate, Skylark_Base::m_CurrentSkState, TAnimal::m_OurLandscape, Skylark_Base::m_OurPopulationManager, Skylark_Base::m_OurTerritories, MyClutch, MyMate, Skylark_Adult::MyTerritory, Skylark_Clutch::OnMumGone(), skTerritory_struct::ref, SkTerritories::RemoveFemale(), Landscape::SupplyDayInYear(), toss_FFloating, toss_FFlocking, and Skylark_Population_Manager::WriteSKPOM1().

Referenced by Skylark_Population_Manager::Catastrophe(), and Skylark_Male::st_Dying().

◆ OnMateHomeless()

void Skylark_Female::OnMateHomeless ( )
6058  {
6059 #ifdef __CJTDebug_5
6060  if ( IsAlive() != 0xDEADC0DE )
6061  DEADCODEError();
6062 #endif
6063  if ( MyClutch ) {
6064  MyClutch->OnMumGone();
6065  MyClutch = 0;
6066 #ifdef __SKPOM
6068 #endif
6069  }
6070  MyMate = NULL;
6071  Paired = false;
6072  BSuccess = false;
6073  MyTerritory.ref = -1;
6076 }

References Skylark_Adult::BSuccess, g_stopdate, Skylark_Base::m_CurrentSkState, TAnimal::m_OurLandscape, Skylark_Base::m_OurPopulationManager, MyClutch, MyMate, Skylark_Adult::MyTerritory, Skylark_Clutch::OnMumGone(), Skylark_Adult::Paired, skTerritory_struct::ref, Landscape::SupplyDayInYear(), toss_FFloating, toss_FFlocking, and Skylark_Population_Manager::WriteSKPOM1().

Referenced by Skylark_Male::OnReHouse().

◆ OnSetMyClutch()

void Skylark_Female::OnSetMyClutch ( Skylark_Clutch p_C)
inline
833  {
834  MyClutch = p_C;
835  }

Referenced by Skylark_Population_Manager::CreateObjects().

◆ OnStopFeedingChicks()

void Skylark_Female::OnStopFeedingChicks ( )
5665  {
5666  // Only a problem if she has to be told to stop feeding
5669 }

References Skylark_Base::m_CurrentSkState, toss_FCaringForYoung, and toss_StartingNewBrood.

Referenced by Skylark_Male::OnPreFledgelingMature(), and Skylark_Male::st_ScaringOffChicks().

◆ PesticideResponse()

void Skylark_Female::PesticideResponse ( void  )
protectedvirtual

Reimplemented from Skylark_Base.

6850  {
6851  if ((m_pesticide_accumulation*1000)/m_Size > cfg_Skylark_female_NOEL.value()) { // * 1000 to go from g to kg
6853  }
6855 }
double value(void)
Definition: configurator.h:118
int m_pesticide_affected
Definition: skylarks_all.h:742
double m_Size
Definition: skylarks_all.h:596
double m_pesticide_accumulation
Definition: skylarks_all.h:592
CfgFloat cfg_Skylark_female_Biodegredation
CfgFloat cfg_Skylark_female_NOEL

References cfg_Skylark_female_Biodegredation, cfg_Skylark_female_NOEL, Skylark_Base::m_pesticide_accumulation, Skylark_Adult::m_pesticide_affected, Skylark_Base::m_Size, and CfgFloat::value().

Referenced by EndStep().

◆ ReInit()

void Skylark_Female::ReInit ( int  x,
int  y,
double  size,
int  age,
SkTerritories Terrs,
Landscape L,
Skylark_Population_Manager SPM,
int  bx,
int  by,
int  mh 
)
virtual

Reimplemented from Skylark_Adult.

5211  {
5212  Skylark_Adult::ReInit(x, y, size, age, Terrs, L, SPM, bx, by, mh);
5213  MyMate = NULL;
5214  MyClutch = NULL;
5216  m_BreedingAttempts = 0;
5218 }
virtual void ReInit(int x, int y, double size, int age, SkTerritories *Terrs, Landscape *L, Skylark_Population_Manager *SPM, int bx, int by, int mh)
Definition: skylarks_all.cpp:3690

References m_BreedingAttempts, m_MinFemaleAcceptScore, MyClutch, MyMate, Skylark_Adult::ReInit(), and ResetBreedingSuccess().

◆ ResetBreedingSuccess()

void Skylark_Female::ResetBreedingSuccess ( )
6114  {
6115 #ifdef __CJTDebug_5
6116  if ( IsAlive() != 0xDEADC0DE )
6117  DEADCODEError();
6118 #endif
6119  m_BreedingSuccess=-1;
6120 }

References m_BreedingSuccess.

Referenced by ReInit(), Skylark_Female(), st_Immigrating(), and Skylark_Population_Manager::TheBreedingSuccessProbe().

◆ SensibleCopy()

void Skylark_Female::SensibleCopy ( )
6813  {
6814  // This is called if a new bird is made as a copy of another and needs to have some sensible information added
6816 }
@ toss_FEmigrating
Definition: skylarks_all.h:57

References Skylark_Base::m_CurrentSkState, and toss_FEmigrating.

Referenced by Skylark_Population_Manager::CreateObjects().

◆ Spiral()

skSpiralResult Skylark_Female::Spiral ( int  x,
int  y,
int  radius 
)
protected

◆ Spiral2()

skSpiralResult Skylark_Female::Spiral2 ( int  x,
int  y,
int  radius 
)
protected

◆ st_Arriving()

bool Skylark_Female::st_Arriving ( )
protected

Ensures that the bird is not paired on arrival and checks the weather status. If bad weather then returns initiates a transition to st_TempLeaveArea otherwise to st_FindTerritory.

5708  {
5713 #ifdef __CJTDebug_5
5714  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
5715 #endif
5716  Paired = false;
5717  if ( GetBadWeather() ) return false;
5718  else
5719  {
5722  return true; // TransferToState(FindTerritory)
5723  }
5724 }
int SupplySimAreaHeight(void)
Definition: landscape.h:1637
int SupplySimAreaWidth(void)
Definition: landscape.h:1632
bool GetBadWeather()
Extreme weather conditions check.
Definition: skylarks_all.cpp:3710
boost::variate_generator< base_generator_type &, boost::uniform_real<> > g_rand_uni

References g_rand_uni, Skylark_Adult::GetBadWeather(), TAnimal::m_Location_x, TAnimal::m_Location_y, TAnimal::m_OurLandscape, Skylark_Adult::Paired, Landscape::SupplySimAreaHeight(), and Landscape::SupplySimAreaWidth().

Referenced by Step().

◆ st_BuildingUpResources()

int Skylark_Female::st_BuildingUpResources ( )
protected

The female forages from her home range each day. On 1st April she will make a transition to preparing for breeding which determines the time needed for egg production and nest building.

6125  {
6130 #ifdef __CJTDebug_5
6131  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6132 #endif
6133  int today = m_OurLandscape->SupplyDayInYear();
6134  if ( today >= g_stopdate ) {
6135  return 2; // GiveUpTerritory
6136  }
6137  if ( GetBadWeather() ) return 2;
6139  {
6140  double qual = MyMate->Supply_TerritoryQual();
6141  if ( qual < m_MinFemaleAcceptScore ) {
6142  // May need to give up territory or might be because the crop has not
6143  // started growing in which case she will wait until May
6144  if ( today >= ( May + 14 ) ) return 2; // GiveUpTerritory
6145  }
6146  EggCounter = 0;
6147  if ( today > April ) return 1; // transferToState(PrepareForBreeding)
6148  }
6149  return 0; // just wait
6150 }
int EggCounter
Definition: skylarks_all.h:798
double Supply_TerritoryQual()
Definition: skylarks_all.h:938
const int May
Definition: landscape.h:40
const int April
Definition: landscape.h:39
const double Breed_Temp_Thresh
Definition: skylarks_all.cpp:237

References April, Breed_Temp_Thresh, EggCounter, g_stopdate, Skylark_Adult::GetBadWeather(), m_MinFemaleAcceptScore, TAnimal::m_OurLandscape, May, MyMate, Skylark_Male::Supply_TerritoryQual(), Landscape::SupplyDayInYear(), and Landscape::SupplyTemp().

Referenced by Step().

◆ st_CaringForYoung()

int Skylark_Female::st_CaringForYoung ( )
protected

Calls Skylark_Female::FeedYoung to get food and give it to the chicks. Once the chicks reach 18 days of age if more breeding is possible then the bird will start a new brood unless it is late in the season or there have been too many breeding attempts in which case she will stop breeding when the chicks are 30 days old. In previous versions there was a bad weather component, but this has been removed since it did not contribute to the POM fit. If future analysis finds a relationship it should be incorporated here.

6515  {
6523 #ifdef __CJTDebug_5
6524  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6525 #endif
6526  FeedYoung(); // get food and give it to the young
6527  int ch_age = MyMate->SupplyBroodAge( 0 );
6528  if ( ch_age == 18 )
6529  // Must stop feeding and start to build a nest. She is ready to
6530  // build nest when the young are 18 days old
6531  {
6532  if ( ( m_BreedingAttempts < 4 ) && ( m_OurLandscape->SupplyDayInYear() < g_stopdate ) )
6533  {
6534  NestLoc = false; // no nest location now
6535  return 1; //Start a new brood
6536  } else if (ch_age == 30) return 2;
6537  }
6538  return 0;
6539 }
bool NestLoc
Definition: skylarks_all.h:796
void FeedYoung()
Definition: skylarks_all.cpp:6542

References FeedYoung(), g_stopdate, m_BreedingAttempts, TAnimal::m_OurLandscape, MyMate, NestLoc, Skylark_Male::SupplyBroodAge(), and Landscape::SupplyDayInYear().

Referenced by BeginStep().

◆ st_Dying()

void Skylark_Female::st_Dying ( void  )
protected
5943  {
5944 #ifdef __CJTDebug_5
5945  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
5946 #endif
5947  if ( MyMate ) {
5948  if ( MyMate->MyMate != this ) {
5949  g_land->Warn( "Skylark_Female::st_Dying - Debug1 ", NULL ); exit( 1 );
5950  }
5951  MyMate->OnMateDying();
5952  MyMate = NULL;
5953  }
5954  if ( MyTerritory.ref != -1 ) {
5956  MyTerritory.ref = -1;
5957  }
5958  if ( MyClutch ) {
5959  MyClutch->OnMumGone();
5960  MyClutch = NULL;
5961 #ifdef __SKPOM
5963 #endif
5964  }
5965  m_CurrentSkState = toss_Destroy; // will kill it at end of step!
5966  m_CurrentStateNo = -1;
5967 }
void OnMateDying()
Definition: skylarks_all.cpp:4311
Skylark_Female * MyMate
Definition: skylarks_all.h:891
int m_CurrentStateNo
The basic state number for all objects - '-1' indicates death.
Definition: PopulationManager.h:116

References g_land, Skylark_Base::m_CurrentSkState, TALMaSSObject::m_CurrentStateNo, TAnimal::m_OurLandscape, Skylark_Base::m_OurPopulationManager, Skylark_Base::m_OurTerritories, MyClutch, MyMate, Skylark_Male::MyMate, Skylark_Adult::MyTerritory, Skylark_Male::OnMateDying(), Skylark_Clutch::OnMumGone(), skTerritory_struct::ref, SkTerritories::RemoveFemale(), Landscape::SupplyDayInYear(), toss_Destroy, Landscape::Warn(), and Skylark_Population_Manager::WriteSKPOM1().

Referenced by Step().

◆ st_EggHatching()

int Skylark_Female::st_EggHatching ( )
protected

A transition is made to Care for Young.

6470  {
6474 #ifdef __CJTDebug_5
6475  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6476 #endif
6477  m_toowet = 0;
6478  return 1; // TransferToState(CareForYoung)
6479 }
int m_toowet
Definition: skylarks_all.h:803

References m_toowet.

Referenced by Step().

◆ st_Emigrating()

int Skylark_Female::st_Emigrating ( )
protected

Is called once a day. This state determines the return to breeding areas based on probabilities that alter with date. Once suitable conditions prevail there will be a transition to st_Immigrating.

5765  {
5766 #ifdef __CJTDebug_5
5767  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
5768 #endif
5769 #ifdef __PESTICIDE_RA_ADULT
5770  // If using reset pesticide affect
5771  m_pesticide_affected = -1;
5772  #endif
5777  int today = m_OurLandscape->SupplyDayInYear();
5778  if ( today >= g_stopdate ) return 0; //don't come back this year
5779  if ( m_OurLandscape->SupplyTemp() > 0.0 ) GoodWeather++; else
5780  GoodWeather = 0;
5781 
5782  if ( GoodWeather >= 7 ) // 7 days of good weather
5783  {
5784  int chance = random( 10000 ); // number between 0-9999
5785  if ( Age < 1 ) // if first year
5786  {
5787  if ( ( chance < 300 ) && ( today >= March + 15 ) ) return 1;
5788  else if ( today >= April + 15 ) return 1;
5789  } else {
5790  if ( ( chance < 7 ) && ( today >= January + 14 ) ) return 1;
5791  else if ( ( chance < 33 ) && ( today >= February + 14 ) ) return 1;
5792  else if ( ( chance < 400 ) && ( today >= March + 14 ) ) return 1;
5793  else if ( ( chance < 1000 ) && ( today >= April + 14 ) )return 1;
5794  else if ( today > ( May ) ) return 1;
5795  }
5796  }
5797  return 0; // return value of 0 do nothing, 1 go to immigration
5798 }
int GoodWeather
Definition: skylarks_all.h:739
const int January
Definition: landscape.h:36
const int March
Definition: landscape.h:38
const int February
Definition: landscape.h:37

References Skylark_Base::Age, April, February, g_stopdate, Skylark_Adult::GoodWeather, January, TAnimal::m_OurLandscape, Skylark_Adult::m_pesticide_affected, March, May, random(), Landscape::SupplyDayInYear(), and Landscape::SupplyTemp().

Referenced by Step().

◆ st_Finding_Territory()

int Skylark_Female::st_Finding_Territory ( )
protected
5843  {
5844 #ifdef __CJTDebug_5
5845  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
5846 #endif
5847  if (GetBadWeather()) return 3;
5848  double score = 0;
5849  skTerritory_struct testTerr;
5850  // First tries to find old mate if breeding was successful
5851  if ( ( BSuccess == true ) && ( MyMate != NULL ) ) {
5852  // Check if mate has a territory
5853  if ( ( MyMate->HaveTerritory == true ) && ( MyMate->Paired == false ) ) {
5854  testTerr = MyMate->Supply_Territory();
5855  // **CJT** Changed below to EvaluateHabitatNest 10/05/04
5856  //score = m_OurTerritories->EvaluateHabitatNest( m_OurTerritories->Supply_terr( testTerr.ref ), true );
5857  score = testTerr.nqual;
5858  }
5859  if ( score > m_MinFemaleAcceptScore ) {
5860  //Establish the territory
5862  return 1; // TransferToState(BuildUpResources)
5863  }
5864  }
5865  // If old-mate did not have a good territory or was not there
5866  // then start a search for a good unoccupied territory
5867  {
5868  // Male't territory was not good so lie to him and say we did not
5869  // come back
5870  if ( MyMate )
5871  if ( MyMate->Paired == false ) MyMate->OnMateNeverComesBack( this );
5872  MyMate = NULL; // Forget him he is no good!
5873  // Sorts through the list of territories until it finds a suitable one
5874  // will remember the last 'one' until if finds a vacant really good one
5875  int NoTerrs = m_OurTerritories->SupplyNoTerritories();
5876  Skylark_Male * A_Male;
5877  int remember = -1;
5878  for ( int i = 0; i < NoTerrs; i++ ) {
5879  A_Male = m_OurTerritories->Supply_Owner( i );
5880  // Is territory occupied?
5881  if ( A_Male != NULL ) {
5882  // Check if a female is already present
5883  if ( m_OurTerritories->Supply_F_Owner( i ) == NULL ) {
5884 #ifdef __CJTDebug_5
5885  if ( A_Male->Paired ) {
5886  g_msg->Warn( WARN_BUG, "Skylark_Female::st_Finding_Territory(): Male already paired!", "" );
5887  exit( 1 ); // Inconsistency
5888  }
5889 #endif
5890  testTerr = A_Male->Supply_Territory();
5891  /* *** CJT *** Changed 4/6/2009. Now requires the male to set the value in his m_MyTerritory
5892  **CJT** Changed below to EvaluateHabitatNest 10/05/04
5893  score = m_OurTerritories->EvaluateHabitatNest( m_OurTerritories->Supply_terr( testTerr.ref ), true );
5894  */
5895  if ( testTerr.nqual >= m_MinFemaleAcceptScore+5 ) {
5896  //Pair with this one
5897  //Establish the territory
5898  MyMate = A_Male;
5900  Paired = true;
5901  return 1; // TransferToState(BuildUpResources)
5902  } else if ( testTerr.nqual >= m_MinFemaleAcceptScore ) remember = i;
5903  }
5904  }
5905  }
5906  if ( remember == -1 ) {
5907 #ifdef FOR_DEMONSTRATION
5908  m_Location_x = 0;
5909  m_Location_y = 0;
5910 #endif
5911  return 2; // TransferToState(Floating);
5912  } else {
5913  //Pair with the male remember
5914  MyMate = m_OurTerritories->Supply_Owner( remember );
5915  //Establish the territory
5917  return 1; // TransferToState(BuildUpResources)
5918  }
5919  }
5920 }
int SupplyNoTerritories()
Definition: skylarks_all.cpp:1422
Skylark_Male * Supply_Owner(int ref)
Definition: skylarks_all.cpp:1452
Skylark_Female * Supply_F_Owner(int ref)
Definition: skylarks_all.cpp:1459
void EstablishTerritory()
Definition: skylarks_all.cpp:5925
Definition: skylarks_all.h:855
bool HaveTerritory
Definition: skylarks_all.h:906
void OnMateNeverComesBack(Skylark_Female *AFemale)
Definition: skylarks_all.cpp:4532
Definition: skylarks_all.h:306
double nqual
Definition: skylarks_all.h:312

References Skylark_Adult::BSuccess, EstablishTerritory(), g_msg, Skylark_Adult::GetBadWeather(), Skylark_Male::HaveTerritory, TAnimal::m_Location_x, TAnimal::m_Location_y, m_MinFemaleAcceptScore, Skylark_Base::m_OurTerritories, MyMate, skTerritory_struct::nqual, Skylark_Male::OnMateNeverComesBack(), Skylark_Adult::Paired, SkTerritories::Supply_F_Owner(), SkTerritories::Supply_Owner(), Skylark_Male::Supply_Territory(), SkTerritories::SupplyNoTerritories(), MapErrorMsg::Warn(), and WARN_BUG.

Referenced by Step().

◆ st_Floating()

int Skylark_Female::st_Floating ( )
protected
5822  {
5823 #ifdef __CJTDebug_5
5824  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
5825 #endif
5826  if ( GetBadWeather() ) return 3;
5830  return 2;
5831  } else {
5832 #ifdef FOR_DEMONSTRATION
5833  m_Location_x = 0;
5834  m_Location_y = 0;
5835 #endif
5836  return 1; //TransferToState(FindTerritory);
5837  }
5838 }
int SupplySimH()
Definition: PopulationManager.h:455
int SupplySimW()
Definition: PopulationManager.h:452

References g_stopdate, Skylark_Adult::GetBadWeather(), TAnimal::m_Location_x, TAnimal::m_Location_y, TAnimal::m_OurLandscape, Skylark_Base::m_OurPopulationManager, random(), Landscape::SupplyDayInYear(), Population_Manager::SupplySimH(), and Population_Manager::SupplySimW().

Referenced by BeginStep().

◆ st_Flocking()

int Skylark_Female::st_Flocking ( )
protected

The bird is assumed to move around the area waiting until weather conditions are suitable to begin Emigration, depending upon the time of year. Only arrives here after breeding, so poor conditions will trigger a transition to Emigration. A transition to Emigration will also occur if the bird has not emigrated before October.

5682  {
5683 #ifdef __CJTDebug_5
5684  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
5685 #endif
5691 #ifdef FOR_DEMONSTRATION
5692  // Removes itinerant dots from the screen, but has no effect on simulation
5693  m_Location_x = 0;
5694  m_Location_y = 0;
5695 #endif
5696 
5697  if ( m_OurLandscape->SupplyDayInYear() > October ) {
5698  GoodWeather = 0;
5699  return 1; //TransferToState(Emigration);
5700  }
5701  bool bad=GetBadWeather();
5702  if ( (bad) && ( m_OurLandscape->SupplyDayInYear() >= September )) return 1; //TransferToState(Emigration);
5703  return 0; // Carry on
5704 }
const int October
Definition: landscape.h:45
const int September
Definition: landscape.h:44

References Skylark_Adult::GetBadWeather(), Skylark_Adult::GoodWeather, TAnimal::m_Location_x, TAnimal::m_Location_y, TAnimal::m_OurLandscape, October, September, and Landscape::SupplyDayInYear().

Referenced by Step().

◆ st_GivingUpTerritory()

int Skylark_Female::st_GivingUpTerritory ( )
protected
6358  {
6359 #ifdef __CJTDebug_5
6360  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6361 #endif
6362  // If she is incubating give a message to the clutch that she is gone
6363  if ( MyClutch ) {
6364  MyClutch->OnMumGone();
6365  MyClutch = NULL;
6366 #ifdef __SKPOM
6368 #endif
6369  }
6370  // Will carry on feeding the young whilst they are needing fed
6371  if ( MyMate->SupplyBroodSize() > 0 ) {
6372  FeedYoung();
6373  return 0; // carry on
6374  } else {
6375  // No young to look after so leave the territory
6376  EggCounter = 0;
6377  NestLoc = false;
6378  // No longer paired
6379  Paired = false;
6380  // Tell the male you are leaving
6381  MyMate->OnMateLeaving();
6382  // if no breeding success then forget him
6383  if ( !BSuccess )
6384  MyMate = NULL;
6385  // de-register the territory ownership (if she owns one)
6387  MyTerritory.ref = -1; // No territory
6388  return 1; // TransferToState(Floating);
6389  }
6390 }
void OnMateLeaving()
Definition: skylarks_all.cpp:4337

References Skylark_Adult::BSuccess, EggCounter, FeedYoung(), TAnimal::m_OurLandscape, Skylark_Base::m_OurPopulationManager, Skylark_Base::m_OurTerritories, MyClutch, MyMate, Skylark_Adult::MyTerritory, NestLoc, Skylark_Male::OnMateLeaving(), Skylark_Clutch::OnMumGone(), Skylark_Adult::Paired, skTerritory_struct::ref, SkTerritories::RemoveFemale(), Skylark_Male::SupplyBroodSize(), Landscape::SupplyDayInYear(), and Skylark_Population_Manager::WriteSKPOM1().

Referenced by Step().

◆ st_Immigrating()

bool Skylark_Female::st_Immigrating ( )
protected

An instantaneous state which determines the chanve of migration mortality. If she does die then she has to inform any old mate that she has gone. If he is already paired with another bird then can just forget him. If not dying then breeding success for this year is reset and the bird transitions to st_Arrival.

5728  {
5734 #ifdef __CJTDebug_5
5735  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
5736 #endif
5737  if ( ( random( 100 ) < GetMigrationMortality() ) || Age > 5 ) {
5738  if ( MyMate != NULL ) {
5739  // if she has no mate she don't care
5740  // Otherwise he receives a bogus on Mate death message
5741  if ( !MyMate->Paired ) {
5742  //Not paired so he is told to forget her
5743  MyMate->OnMateNeverComesBack( this );
5744  }
5745  // He is paired so don't need to tell him anything - forget him
5746  // or have already told him so forget him anyway
5747  MyMate = NULL;
5748 #ifdef __CJTDebug_8
5749  if ( MyClutch != NULL )
5750  int rubbish = 0;
5751 #endif
5752  }
5753  return false; // TransfertoState(Die)
5754  } else {
5756  m_BreedingAttempts = 0;
5757  m_pesticide_affected = -1; // reset the sprayed flag
5759  return true; // TransferToState(Arrival)
5760  }
5761 }
int GetMigrationMortality()
Definition: skylarks_all.cpp:6753
CfgFloat cfg_FemaleMinTerritoryAcceptScore

References Skylark_Base::Age, cfg_FemaleMinTerritoryAcceptScore, GetMigrationMortality(), m_BreedingAttempts, m_MinFemaleAcceptScore, Skylark_Adult::m_pesticide_affected, MyClutch, MyMate, Skylark_Male::OnMateNeverComesBack(), Skylark_Adult::Paired, random(), ResetBreedingSuccess(), and CfgFloat::value().

Referenced by Step().

◆ st_Incubating()

int Skylark_Female::st_Incubating ( )
protected

Incubation occurs as described in development below. The female spends that time off the nest required to find energy to cover her basal metabolic requirements, plus that energy required to warm the eggs. Incubation continues until the eggs hatch and there is a transition to Care For Young, or the incubation period (MID) is exceeded, at which point the female will Start New Brood. This state can only be left by a call to OnEggHatch being altered on creation of a nestling or to StartNewBrood

6429  {
6430 #ifdef __CJTDebug_5
6431  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6432 #endif
6440  // Must calculate time needed to feed
6441  // will ignore time off nest due to disturbance
6442  m_NestTime = 0;
6443  if ( --m_Counter1 > 0 )
6444  {
6445  // ExtraBroodHeat extra because of heat for eggs
6446  double calories_needed = m_OurPopulationManager->SupplyEMi();
6447  int foodtime = CalcFoodTime( calories_needed );
6448  int Daylength = m_OurLandscape->SupplyDaylength();
6449  double rain = m_OurLandscape->SupplyRain();
6450  if ( rain > MaxFeedRain )
6451  {
6452  m_toowet++;
6453  }
6454  if ( m_toowet > 2 )
6455  {
6456  //m_OurPopulationManager->WriteToTest2File( m_OurLandscape->SupplyDayInYear(), 1003 );
6457  return 3; //TransferToState(StartNewBrood);
6458  } else
6459  {
6460  if ( foodtime > Daylength ) foodtime = Daylength;
6461  m_NestTime = ( 24 * 60 - foodtime ); //add night time
6462  return 0; // wait
6463  }
6464  }
6465  //m_OurPopulationManager->WriteToTest2File( m_OurLandscape->SupplyDayInYear(), 1002 );
6466  return 3; // TransferToState(StartNewBrood);
6467 }
int CalcFoodTime(double target)
Definition: skylarks_all.cpp:6709
double SupplyEMi()
Definition: skylarks_all.h:558

References CalcFoodTime(), m_Counter1, m_NestTime, TAnimal::m_OurLandscape, Skylark_Base::m_OurPopulationManager, m_toowet, MaxFeedRain, Landscape::SupplyDaylength(), Skylark_Population_Manager::SupplyEMi(), and Landscape::SupplyRain().

Referenced by Step().

◆ st_Laying()

TTypesOfSkState Skylark_Female::st_Laying ( )
protected
6259  {
6260  if ( MyMate == NULL ) {
6261  g_msg->Warn( WARN_BUG, "Skylark_Female::st_Laying(): No mate!", "" );
6262  exit( 1 );
6263  }
6264 #ifdef __CJTDebug_5
6265  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6266 #endif
6267  // Timing called Once each day
6268  // lays 1 egg per day until the correct number of eggs are laid
6269  // Counter1 must be set to -1 on first time called
6270  if ( m_Counter1 == -1 ) {
6271  // If we have not calculated how many eggs we need do that
6274 #ifdef __PESTICIDE_RA_ADULT
6275  // If pesticide affected then breeding is delayed
6276  if (m_pesticide_affected > -1) {
6279  }
6283  }
6284  else {
6285  // This code assumes egg independence
6286  for (int e = 0; e < m_EggNumber; e++) {
6288  }
6289  }
6290  if (m_EggNumber < 1) {
6293  }
6294  }
6295  m_Counter1 = m_EggNumber; // this is needed in case we adjusted the egg number (m_counter is used to count down the number of days of laying.
6296  }
6297 #endif
6298  // This code is a special test for egg shell thickness effects - it can be linked to the pesticide effect above, or assumed to be
6299  // a general effect
6301  {
6302 /* // This code assumes egg independence
6303  for (int e = 0; e < m_EggNumber; e++)
6304  {
6305  if (g_rand_uni() <= cfg_skylark_pesticide_eggshellreduction.value()) m_Counter1--;
6306  }
6307  m_EggNumber = m_Counter1;
6308 */
6309  // this code assumes clutch effects of thin egg shells
6311  if (m_EggNumber<1) {
6314  }
6315 
6316  }
6317 
6318  // The line below counts breeding attempts as at least one egg
6320  skClutch_struct * cs;
6321  cs = new skClutch_struct;
6322  cs->L = m_OurLandscape;
6323  cs->Mum = this;
6324  cs->No = 0;
6325  cs->Terrs = m_OurTerritories;
6326 #ifdef FOR_DEMONSTRATION
6327  cs->x = m_Location_x + 3;
6328  cs->y = m_Location_y + 3;
6329 #else
6330  cs->x = m_Location_x;
6331  cs->y = m_Location_y;
6332 #endif
6333  cs->bx = m_Location_x;
6334  cs->by = m_Location_y;
6335  // This sets the veg type for ever for the life of this nest and any eggs it contains
6339  m_OurPopulationManager->CreateObjects( 0, this, NULL, cs, 1 );
6340  delete cs;
6341  }
6342  // Put an egg in the clutch
6343  MyClutch->AddEgg();
6344  if ( --m_Counter1 == 0 ) {
6345  // All eggs must be laid
6346  m_Counter1 = 18; // This will count how many day spent incubating
6348  return toss_Incubating; //TransferToState(Incubation);
6349  }
6350  return toss_Laying;
6351 }
bool value(void)
Definition: configurator.h:135
int SupplyYearNumber(void)
Definition: landscape.h:1616
TTypesOfPesticide SupplyPesticideType(void)
Definition: landscape.h:433
TTypesOfVegetation SupplyVegType(int a_x, int a_y)
Definition: landscape.h:1321
void StartDeveloping()
Definition: skylarks_all.h:661
void AddEgg()
Definition: skylarks_all.h:656
int m_EggNumber
Definition: skylarks_all.h:801
int CalculateEggNumber()
Definition: skylarks_all.cpp:6683
void CreateObjects(int ob_type, TAnimal *pTAo, void *null, Skylark_struct *data, int number)
Definition: skylarks_all.cpp:557
int bx
Definition: skylarks_all.h:200
Landscape * L
Definition: skylarks_all.h:203
int x
Definition: skylarks_all.h:198
SkTerritories * Terrs
Definition: skylarks_all.h:204
int y
Definition: skylarks_all.h:199
int mh
Definition: skylarks_all.h:202
int by
Definition: skylarks_all.h:201
Definition: skylarks_all.h:217
Skylark_Female * Mum
Definition: skylarks_all.h:220
int No
Definition: skylarks_all.h:219
@ ttop_eggshellthinning
Definition: landscape.h:75
@ ttop_ReproductiveEffects
Definition: landscape.h:69
CfgFloat cfg_skylark_pesticide_globaleggshellreduction
CfgBool cfg_skylark_pesticide_eggshellreduction_perclutch
CfgFloat cfg_skylark_pesticide_eggshellreduction
@ toss_Incubating
Definition: skylarks_all.h:59
@ toss_Laying
Definition: skylarks_all.h:58

References Skylark_Clutch::AddEgg(), Skylark_struct::bx, Skylark_struct::by, CalculateEggNumber(), cfg_skylark_pesticide_eggshellreduction, cfg_skylark_pesticide_eggshellreduction_perclutch, cfg_skylark_pesticide_globaleggshellreduction, Skylark_Population_Manager::CreateObjects(), g_msg, g_rand_uni, Skylark_struct::L, m_BreedingAttempts, m_Counter1, m_EggNumber, TAnimal::m_Location_x, TAnimal::m_Location_y, TAnimal::m_OurLandscape, Skylark_Base::m_OurPopulationManager, Skylark_Base::m_OurTerritories, Skylark_Adult::m_pesticide_affected, Skylark_struct::mh, skClutch_struct::Mum, MyClutch, MyMate, skClutch_struct::No, Skylark_Clutch::StartDeveloping(), Landscape::SupplyDayInYear(), Landscape::SupplyPesticideType(), Population_Manager::SupplySimH(), Population_Manager::SupplySimW(), Landscape::SupplyVegType(), Landscape::SupplyYearNumber(), Skylark_struct::Terrs, toss_Incubating, toss_Laying, toss_PreparingForBreeding, ttop_eggshellthinning, ttop_ReproductiveEffects, CfgFloat::value(), CfgBool::value(), MapErrorMsg::Warn(), WARN_BUG, Skylark_struct::x, and Skylark_struct::y.

Referenced by Step().

◆ st_MakingNest()

TTypesOfSkState Skylark_Female::st_MakingNest ( )
protected

Tests for the necessary territory quality, if OK finds a nest location and builds the nest. Nest attempts are assumed to be breeding attempts.

6193 {
6198 #ifdef __PESTICIDE_RA_ADULT
6199  // If pesticide affected then breeding is delayed
6200  if (m_pesticide_affected > -1)
6201  {
6203  {
6204  NestLoc = false;
6206  }
6207  }
6208 #endif
6209 
6210  if (MyMate == NULL) {
6211  g_msg->Warn(WARN_BUG, "Skylark_Female::st_MakingNest(): No mate!", "");
6212  exit(1);
6213  }
6214  int today = m_OurLandscape->SupplyDayInYear();
6215  if (!NestLoc) {
6216  // First make a test whether territory is still OK
6217  double qual = MyMate->Supply_TerritoryQual();
6218  if (qual < m_MinFemaleAcceptScore) {
6219  // May need to give up territory or might be because the crop has not
6220  // started growing in which case she will wait until May
6221  if (today >= (June)) {
6222  return toss_GivingUpTerritory; // GiveUpTerritory
6223  }
6224  return toss_MakingNest;
6225  }
6226 
6227  // Everything OK so find a nest location
6228  bool valid = MyMate->SupplyNestValid();
6229  if (valid) {
6230  APoint p = MyMate->SupplyNestLoc();
6231  m_Location_x = p.m_x;
6232  m_Location_y = p.m_y;
6233  // Must tell the male
6234  if (MyMate)
6235  MyMate->OnNestLocation(p.m_x, p.m_y);
6236  }
6237  else {
6238  // m_OurPopulationManager->WriteToTestFile(-1,-1);
6239  if (today >= (May + 14)) {
6240  return toss_GivingUpTerritory; // GiveUpTerritory
6241  }
6242  else
6243  return toss_MakingNest;
6244  }
6245  // The line below counts breeding attempts as nest building
6246  // the alternative is to count this from one egg laid in St_Laying()
6247  if (m_BreedingSuccess == -1) m_BreedingSuccess = 0; //Signal breeding was possible
6248  //m_BreedingAttempts++;
6249  }
6250  // Nest location must exist
6251  if (m_Counter1-- > 0) return toss_MakingNest; else
6252  {
6253  m_Counter1 = -1; // Code for deciding many days before laying starts
6254  return toss_Laying; //TransferToState Laying;
6255  }
6256 }
A simple class defining an x,y coordinate set.
Definition: ALMaSS_Setup.h:53
int m_y
Definition: ALMaSS_Setup.h:56
int m_x
Definition: ALMaSS_Setup.h:55
bool SupplyNestValid()
Definition: skylarks_all.h:980
APoint SupplyNestLoc()
Definition: skylarks_all.h:983
void OnNestLocation(int x, int y)
Definition: skylarks_all.cpp:4907
const int June
Definition: landscape.h:41

References g_msg, June, m_BreedingSuccess, m_Counter1, TAnimal::m_Location_x, TAnimal::m_Location_y, m_MinFemaleAcceptScore, TAnimal::m_OurLandscape, Skylark_Adult::m_pesticide_affected, APoint::m_x, APoint::m_y, May, MyMate, NestLoc, Skylark_Male::OnNestLocation(), Skylark_Male::Supply_TerritoryQual(), Landscape::SupplyDayInYear(), Skylark_Male::SupplyNestLoc(), Skylark_Male::SupplyNestValid(), toss_GivingUpTerritory, toss_Laying, toss_MakingNest, toss_PreparingForBreeding, MapErrorMsg::Warn(), and WARN_BUG.

Referenced by Step().

◆ st_PreparingForBreeding()

int Skylark_Female::st_PreparingForBreeding ( )
protected

Builds up resources whilst waiting for good enough weather to begin nest building. Transitions to MakingNest or GiveUpTerritory (if too late in the season).

6155 {
6160 #ifdef __CJTDebug_5
6161  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6162 #endif
6163  // Timing: Called once per day
6164  // EggCounter was set to Zero on leaving building up resources
6165  // Egg counter is the refraction period for producing the
6166  // eggs - nesbuilding time
6167  long today = m_OurLandscape->SupplyDayInYear();
6168  if ( today > g_stopdate ) return 2; // too late give up
6170  if ( EggCounter++ > 5 ) {
6171  // if ( ( Resources < Breed_Res_Thresh2 ) || ( m_OurLandscape->SupplySnowcover() ) == true ) return 0; // snow or not enough resources
6172  if ( m_OurLandscape->SupplySnowcover() == true ) return 0; // snow
6173  // Check that the temp is above 5 for the last three days
6174  today = m_OurLandscape->SupplyGlobalDate();
6175  double t = m_OurLandscape->SupplyTemp( today );
6176  if ( t < 5.0 ) return 0; // too cold
6177  t = m_OurLandscape->SupplyTemp( today - 1 );
6178  if ( t < 5.0 ) return 0; // too cold
6179  t = m_OurLandscape->SupplyTemp( today - 2 );
6180  if ( t < 5.0 ) return 0; // too cold
6181  // Everything is OK so build
6182  // takes one day less to build nest on first attempt (3 rather than 4)
6183  if ( m_BreedingAttempts > 0 ) m_Counter1 = 4; else {
6184  m_Counter1 = 3;
6185  }
6186  return 1; // TransferToState(MakeNest)
6187  }
6188  return 0;
6189 }
long SupplyGlobalDate(void)
Definition: landscape.h:1621
bool SupplySnowcover(void)
Definition: landscape.h:1437

References EggCounter, g_stopdate, GetFood(), m_BreedingAttempts, m_Counter1, TAnimal::m_OurLandscape, Skylark_Adult::RemoveEM(), Resources, Landscape::SupplyDayInYear(), Landscape::SupplyDaylength(), Landscape::SupplyGlobalDate(), Landscape::SupplySnowcover(), and Landscape::SupplyTemp().

Referenced by Step().

◆ st_StartingNewBrood()

int Skylark_Female::st_StartingNewBrood ( )
protected

Any current nests or clutches are removed. The female assesses the habitat quality of the territory. If still suitable (i.e. above MTQ) she will make a transition to Make Nest, otherwise she will go to Give Up Territory.

6397 {
6402 #ifdef __CJTDebug_5
6403  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6404 #endif
6405  NestLoc = false;
6406  if ( MyClutch ) {
6407  MyClutch->OnMumGone();
6408  MyClutch = NULL;
6409 #ifdef __SKPOM
6411 #endif
6412  }
6413  double qual = MyMate->Supply_TerritoryQual();
6414  if ( qual < m_MinFemaleAcceptScore ) {
6415  return 2; // transferToState(GiveUpTerritory)
6416  }
6417  if ( ( m_BreedingAttempts < 4 ) && ( m_OurLandscape->SupplyDayInYear() < g_stopdate ) ) { // Was July-4
6418  if ( m_BreedingAttempts > 0 ) m_Counter1 = 4; else
6419  m_Counter1 = 3;
6420  m_toowet = 0;
6421  return 1; // TransferToState(MakeNest)
6422  } else {
6424  return 3; // Transfer to state flocking
6425  }
6426 }
int st_StoppingBreeding()
Definition: skylarks_all.cpp:6485

References g_stopdate, m_BreedingAttempts, m_Counter1, m_MinFemaleAcceptScore, TAnimal::m_OurLandscape, Skylark_Base::m_OurPopulationManager, m_toowet, MyClutch, MyMate, NestLoc, Skylark_Clutch::OnMumGone(), st_StoppingBreeding(), Skylark_Male::Supply_TerritoryQual(), Landscape::SupplyDayInYear(), and Skylark_Population_Manager::WriteSKPOM1().

Referenced by Step().

◆ st_StoppingBreeding()

int Skylark_Female::st_StoppingBreeding ( )
protected

Called when the female stops breeding for the year. Removes the pair bond and tell the male she is leaving. She deregisters her territory ownership and if there has been no breeding success then she forgets the male.

6485  {
6490 #ifdef __CJTDebug_5
6491  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
6492 #endif
6493  if ( MyClutch ) {
6494  MyClutch->OnMumGone();
6495  MyClutch = NULL;
6496 #ifdef __SKPOM
6498 #endif
6499  }
6500  // No longer paired
6501  Paired = false;
6502  // Tell the male you are leaving
6503  MyMate->OnMateLeaving();
6504  // if no breeding success then forget him
6505  if ( !BSuccess )
6506  MyMate = NULL;
6507  // de-register the territory ownership
6509  MyTerritory.ref = -1; // No territory
6510  // TransferToState(Flocking)
6511  return 3;
6512 }

References Skylark_Adult::BSuccess, TAnimal::m_OurLandscape, Skylark_Base::m_OurPopulationManager, Skylark_Base::m_OurTerritories, MyClutch, MyMate, Skylark_Adult::MyTerritory, Skylark_Male::OnMateLeaving(), Skylark_Clutch::OnMumGone(), Skylark_Adult::Paired, skTerritory_struct::ref, SkTerritories::RemoveFemale(), Landscape::SupplyDayInYear(), and Skylark_Population_Manager::WriteSKPOM1().

Referenced by st_StartingNewBrood(), and Step().

◆ st_TempLeavingArea()

int Skylark_Female::st_TempLeavingArea ( )
protected

Waits for one week of weather not classified as bad by Skylark_Adult::GetBadWeather

5803  {
5807 #ifdef __CJTDebug_5
5808  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
5809 #endif
5810  // Timing - called once per day
5811  if ( !GetBadWeather() ) GoodWeather++;
5812  else GoodWeather = 0;
5813  if ( GoodWeather >= 7 ) // Week of not terrible weather
5814  {
5815  return 1; // comeback to the area
5816  }
5817  return 0; // return value of 0 do nothing, 1 go to Arrival
5818 }

References Skylark_Adult::GetBadWeather(), and Skylark_Adult::GoodWeather.

Referenced by Step().

◆ Step()

void Skylark_Female::Step ( void  )
virtual

Step behaviour - must be implemented in descendent classes.

Reimplemented from TAnimal.

5471  {
5472 #ifdef __CJTDebug_5
5473  if ( IsAlive() != 0x0DEADC0DE ) DEADCODEError();
5474 #endif
5475  if ( m_StepDone || m_CurrentSkState == toss_Destroy ) return;
5476 #ifdef __CJTDebug_5
5477  if ( MyClutch ) {
5478  if ( MyClutch->Mother != this ) {
5479  g_land->Warn( "Skylark_Female::Step: DeBug5 ", NULL ); exit( 1 );
5480  }
5481  }
5482 #endif
5483  switch ( m_CurrentSkState ) {
5484  case toss_Initiation: // Initial
5486  break;
5487  case toss_FFlocking: // Flocking
5488  switch ( st_Flocking() ) {
5489  case 1:
5490  // use 0,0 as a default location
5491  m_Location_x = 0;
5492  m_Location_y = 0;
5493  m_CurrentSkState = toss_FEmigrating; // -> Emigration
5494  break;
5495  }
5496  m_StepDone = true;
5497  break;
5498  case toss_FFloating: // Floating
5499  m_StepDone = true;
5500  break;
5501  case toss_FArriving: // Arriving - instant
5502  if ( st_Arriving() ) m_CurrentSkState = toss_FFindingTerritory; // -> find terr.
5503  else {
5505  }
5506  m_StepDone = true;
5507  break;
5508  case toss_FImmigrating: // Immigration - instant
5509  if ( st_Immigrating() ) m_CurrentSkState = toss_FArriving; // -> arrival
5510  else {
5511 #ifdef TEST_ISSUE_DEATH_WARRANT
5512  printf( "Skylark_Female::Step() : st_Immigrating() : %d\n", ( int )g_date->Date() );
5513 #endif
5514  m_CurrentSkState = toss_FDying; // -> die
5515  }
5516  break;
5517  case toss_FEmigrating: // Emigration
5518  if ( st_Emigrating() == 1 ) m_CurrentSkState = toss_FImmigrating; // -> immigr.
5519  m_StepDone = true;
5520  break;
5521  case toss_FTempLeavingArea: // temp.leave.area
5522  if ( st_TempLeavingArea() ) m_CurrentSkState = toss_FArriving; // -> arrival
5523  m_StepDone = true;
5524  break;
5525  case toss_FFindingTerritory: // FindingTerritory
5526  switch ( st_Finding_Territory() ) {
5527  case 1:
5528  m_CurrentSkState = toss_BuildingUpResources; // -> building res.
5529 #ifdef __CJTDebug_5
5530  if ( !Paired ) {
5531  g_land->Warn( "Skylark_Female::Step: !Paired ", NULL ); exit( 1 );
5532  }
5533 #endif
5534  break;
5535  case 2:
5536  // Should never be paired here
5537  m_CurrentSkState = toss_FFloating; // -> floating
5538  break;
5539  case 3:
5541  break;
5542  }
5543  m_StepDone = true; // will now go one to EndStep
5544  break;
5545  case toss_BuildingUpResources: // Building Resources
5546 #ifdef __CJTDebug_5
5547  if ( !Paired ) {
5548  g_land->Warn( "Skylark_Female::Step: !Paired ", NULL ); exit( 1 );
5549  }
5550 #endif
5551  switch ( st_BuildingUpResources() ) {
5552  case 1:
5553  m_CurrentSkState = toss_PreparingForBreeding; // -> prepare for breed.
5554  break;
5555  case 2:
5556  // m_OurPopulationManager->WriteToTestFile(-2,-1);
5557  m_CurrentSkState = toss_GivingUpTerritory; // -> give up territory
5558  break;
5559  }
5560  m_StepDone = true;
5561  break;
5562  case toss_MakingNest: // Making nest
5564  m_StepDone = true; // will now go one to EndStep
5565  break;
5566  case toss_PreparingForBreeding: // PreparingForBreeding
5567 #ifdef __CJTDebug_5
5568  if ( !Paired ) {
5569  g_land->Warn( "Skylark_Female::Step: !Paired ", NULL ); exit( 1 );
5570  }
5571 #endif
5572  switch ( st_PreparingForBreeding() ) {
5573  case 0: // Do nothing
5574  break;
5575  case 1:
5576  m_CurrentSkState = toss_MakingNest; // -> make nest
5577  NestLoc = false; // no nest location yet
5578  break;
5579  case 2: // Too late -> give up for this year
5581  break;
5582  }
5583  m_StepDone = true; // will now go one to EndStep
5584  break;
5585  case toss_Laying: // Laying
5588  m_StepDone = true;
5589  break;
5590  case toss_StartingNewBrood: // StartingNewBrood
5591  switch ( st_StartingNewBrood() ) {
5592  case 1:
5593  m_CurrentSkState = toss_MakingNest; // -> make nest
5594  break;
5595  case 2:
5596  // m_OurPopulationManager->WriteToTestFile(-3,-1);
5597  m_CurrentSkState = toss_GivingUpTerritory; // -> give up terr.
5598  break;
5599  case 3:
5600  m_CurrentSkState = toss_FFlocking; // -> flocking
5601  break;
5602  }
5603  m_StepDone = true; // will now go one to EndStep
5604  break;
5605  case toss_EggHatching: // EggHatching - happens after the young hatch at 1 min to midnight
5606  if ( st_EggHatching() ) m_CurrentSkState = toss_FCaringForYoung; // -> care for young
5607  m_StepDone = true;
5608  break;
5609  case toss_Incubating: // Incubation
5610  switch ( st_Incubating() ) {
5611  case 1: {
5612  g_land->Warn( "Skylark_Female::Step: EggHatching ", NULL ); exit( 1 );
5613  }
5614  //m_CurrentSkState=35; // -> egg hatch
5615  break;
5616  case 2:
5617  g_land->Warn( "Skylark_Female::Step: Illegal Return Value ", NULL );
5618  exit( 1 );
5619  case 3:
5620  m_CurrentSkState = toss_StartingNewBrood; // -> start new brood
5621  MyClutch->OnMumGone();
5622  MyClutch = NULL;
5623 #ifdef __SKPOM
5625 #endif
5626  break;
5627  }
5628  m_StepDone = true; // will now go one to EndStep
5629  break;
5630  case toss_StoppingBreeding: // StopBreed. - instant
5631  if ( st_StoppingBreeding() ) {
5632  m_CurrentSkState = toss_FFlocking; // -> flocking
5633  }
5634  break;
5635  case toss_FDying: // Dying
5636  st_Dying();
5637  m_StepDone = true;
5638  break;
5639  case toss_GivingUpTerritory: // giving up terr. - one day
5640  if ( st_GivingUpTerritory() == 1 ) m_CurrentSkState = toss_FFloating; // -> floating
5641  m_StepDone = true;
5642  break;
5643  default:
5645  g_land->Warn( "Skylark_Female::Step: Unknown State", st.c_str() );
5646  exit( 1 );
5647  }
5648 }
const char * SupplyStateNames(int i)
Definition: PopulationManager.h:497
Skylark_Female * Mother
Definition: skylarks_all.h:670
int st_StartingNewBrood()
Definition: skylarks_all.cpp:6396
int st_BuildingUpResources()
Definition: skylarks_all.cpp:6125
int st_Flocking()
Definition: skylarks_all.cpp:5682
int st_TempLeavingArea()
Definition: skylarks_all.cpp:5803
int st_GivingUpTerritory()
Definition: skylarks_all.cpp:6358
TTypesOfSkState st_MakingNest()
Definition: skylarks_all.cpp:6192
int st_PreparingForBreeding()
Definition: skylarks_all.cpp:6154
TTypesOfSkState st_Laying()
Definition: skylarks_all.cpp:6259
void st_Dying()
Definition: skylarks_all.cpp:5943
int st_Emigrating()
Definition: skylarks_all.cpp:5765
bool st_Immigrating()
Definition: skylarks_all.cpp:5728
int st_Incubating()
Definition: skylarks_all.cpp:6429
int st_Finding_Territory()
Definition: skylarks_all.cpp:5843
int st_EggHatching()
Definition: skylarks_all.cpp:6470
bool st_Arriving()
Definition: skylarks_all.cpp:5708
@ toss_Initiation
Definition: skylarks_all.h:45
@ toss_BuildingUpResources
Definition: skylarks_all.h:58
@ toss_FImmigrating
Definition: skylarks_all.h:57
@ toss_FArriving
Definition: skylarks_all.h:57

References Calendar::Date(), g_date, g_land, Skylark_Base::m_CurrentSkState, TAnimal::m_Location_x, TAnimal::m_Location_y, TAnimal::m_OurLandscape, Skylark_Base::m_OurPopulationManager, TALMaSSObject::m_StepDone, m_toowet, Skylark_Clutch::Mother, MyClutch, NestLoc, Skylark_Clutch::OnMumGone(), Skylark_Adult::Paired, st_Arriving(), st_BuildingUpResources(), st_Dying(), st_EggHatching(), st_Emigrating(), st_Finding_Territory(), st_Flocking(), st_GivingUpTerritory(), st_Immigrating(), st_Incubating(), st_Laying(), st_MakingNest(), st_PreparingForBreeding(), st_StartingNewBrood(), st_StoppingBreeding(), st_TempLeavingArea(), Landscape::SupplyDayInYear(), Population_Manager::SupplyStateNames(), toss_BuildingUpResources, toss_Destroy, toss_EggHatching, toss_FArriving, toss_FCaringForYoung, toss_FDying, toss_FEmigrating, toss_FFindingTerritory, toss_FFloating, toss_FFlocking, toss_FImmigrating, toss_FTempLeavingArea, toss_GivingUpTerritory, toss_Incubating, toss_Initiation, toss_Laying, toss_MakingNest, toss_PreparingForBreeding, toss_StartingNewBrood, toss_StoppingBreeding, Landscape::Warn(), and Skylark_Population_Manager::WriteSKPOM1().

◆ Supply_BreedingAttempts()

int Skylark_Female::Supply_BreedingAttempts ( )
6094  {
6095 #ifdef __CJTDebug_5
6096  if ( IsAlive() != 0xDEADC0DE )
6097  DEADCODEError();
6098 #endif
6099  return m_BreedingAttempts;
6100 }

References m_BreedingAttempts.

Referenced by Skylark_Population_Manager::TheBreedingSuccessProbe().

◆ Supply_BreedingSuccess()

int Skylark_Female::Supply_BreedingSuccess ( )
6104  {
6105 #ifdef __CJTDebug_5
6106  if ( IsAlive() != 0xDEADC0DE )
6107  DEADCODEError();
6108 #endif
6109  return m_BreedingSuccess;
6110 }

References m_BreedingSuccess.

Referenced by Skylark_Population_Manager::TheBreedingSuccessProbe().

◆ Supply_NestTime()

int Skylark_Female::Supply_NestTime ( )
inline
819  {
820  return m_NestTime;
821  }

Referenced by Skylark_Clutch::st_Developing().

◆ SupplyMyClutch()

Skylark_Clutch* Skylark_Female::SupplyMyClutch ( )
inline
824  {
825  return MyClutch;
826  }

Referenced by Skylark_Clutch::Step().

Member Data Documentation

◆ EggCounter

int Skylark_Female::EggCounter
protected

◆ m_BreedingAttempts

◆ m_BreedingSuccess

int Skylark_Female::m_BreedingSuccess
protected

◆ m_Counter1

◆ m_EggNumber

int Skylark_Female::m_EggNumber
protected

Referenced by st_Laying().

◆ m_MinFemaleAcceptScore

double Skylark_Female::m_MinFemaleAcceptScore
protected

◆ m_NestTime

int Skylark_Female::m_NestTime
protected

Referenced by FeedYoung(), and st_Incubating().

◆ m_pesticide_sprayed_die

bool Skylark_Female::m_pesticide_sprayed_die
protected

◆ m_toowet

int Skylark_Female::m_toowet
protected

◆ MyClutch

◆ MyMate

◆ NestLoc

bool Skylark_Female::NestLoc
protected

◆ Resources

double Skylark_Female::Resources
protected

The documentation for this class was generated from the following files: